The present invention relates to processing of data blocks for storage and retrieval from a open system data storage device, and more particularly, to an improved arrangement for processing of data blocks to accommodate data compression, CRC redundancy codes, and encryption in such an open system architecture.
An open systems environment, i.e., a system capable of operating without a specified device driver, can provide system flexibility by accommodating connection to different, unspecified data storage devices. However, without a vendor specific device driver, devices presented for use on an open systems host must be formatted with a logical block size of 512 bytes. In other words, if the blocks are larger than 512 bytes, the operating system will not recognize the device and bring it online. When executing reads and writes to the device the operating system will generally move data based upon an allocation size defined at the time that the file system was placed on the device. Depending, on the structure and size of file being accessed, a host may request a block of data smaller than the file system allocation size. The smallest request that can be made is for the read or write of a single logical block, i.e., 512 bytes.
The target device wants to store data in larger blocks than the logical block size of 512 bytes. This allows for more efficient utilization of the device data paths, buffers and management structures, and improvement in overall performance. More specifically, the performance problem associated with storing the data in block sizes of 512 bytes derives from the need for a high amount of processing overhead to move from one block to the next within a single read or write operation. Because of such overhead requirements, it is not uncommon for devices to access larger blocks of data from the physical media and return or update only those portions addressed by the host.
In a storage subsystem like a Shared Virtual Array (SVA), the problem of reading or writing a portion of a larger data block is accentuated by the architecture of the subsystem as a result of the data being stored in a compressed format and including several CRC redundancy codes over the data block. The CRC redundancy codes are used to maintain data integrity within the control unit, and are generated and appended to the data as it is received from the host. The compression of data is an enhancement which allows a greater effective bandwidth and physical media utilization for the control unit and disk array. In order to allow the addressability of a single 512 byte logical block, the data is stored on the array in compressed 512 byte blocks so that the interface card is able to check and generate the CRC code for the single block being accessed.
However, storing of data blocks in small, host accessible sizes significantly reduces storage subsystem efficiency through increased overhead and data processing time. As such, a need exists for an arrangement capable of improved efficiency in storing and accessing of such data blocks which still supports handling of the data in its original, host accessible block size, as well as any original compression and error correction coding.
It is therefore an object of the present invention to provide a method and system of storing and accessing host addressable logical blocks within a larger subsystem data block.
In accordance with this and other objects, the present invention provides a method of storing and accessing data on a storage device in data blocks having a larger size than an original logical data block formatted on a host system. The method includes receiving a plurality of original logical data blocks from the host, reformatting the data of the logical data blocks into data blocks having a larger block size, and maintaining a record of the location within a larger data block of each reformatted original logical data block. Accessing the data includes receiving a data command from the host system, determining if the data command aligns with boundaries of the reformatted, larger size data block, and for nonaligning commands, processing the larger data block in segments to align the data transfer to allow the subportion of data relating to the host command to be accessed from the larger block.
In accordance with another aspect of the present invention, a system is provided for controlling storing and accessing of data on a storage device in data blocks having a larger size than an original logical data block formatted on a host system, wherein the system includes an interface circuit arranged to receive a plurality of original logical data blocks from the host, and a controller arranged to reformat the data of the logical data blocks into data blocks having a larger block size, and maintain a record of the location within a larger data block of each reformatted original logical data block. The controller is further arranged to control accessing of the data in response to receiving a data command from the host system, including determining if the data command aligns with boundaries of the reformatted, larger size data block, and for nonaligning commands, processing the larger data block in segments to align the data transfer to allow the subportion of data relating to the host command to be accessed from the larger block.
The above object and other objects, features and advantages of the present invention are more readily understood from a review of the attached drawings and the accompanying specification and claims.